package com.xiaoma.mframe.project.tool.gen.service.Impl;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xiaoma.mframe.general.utils.Convert;
import com.xiaoma.mframe.general.web.entity.SessionEntity;
import com.xiaoma.mframe.project.tool.gen.entity.Template;
import com.xiaoma.mframe.project.tool.gen.mapper.TemplateMapper;
import com.xiaoma.mframe.project.tool.gen.service.ITemplateService;


/**
 * 模板 服务层实现
 * 
 * @author machuxin
 * @date 2018-11-26
 */
@Service
public class TemplateServiceImpl implements ITemplateService 
{
	@Autowired
	private TemplateMapper templateMapper;

	/**
     * 查询模板信息
     * 
     * @param id 模板ID
     * @return 模板信息
     */
    @Override
	public Template selectTemplateById(Long id)
	{
	    return templateMapper.selectTemplateById(id);
	}
	
	/**
     * 查询模板列表
     * 
     * @param template 模板信息
     * @return 模板集合
     */
	@Override
	public List<Template> selectTemplateList(Template template)
	{
	    return templateMapper.selectTemplateList(template);
	}
	
    /**
     * 新增模板
     * 
     * @param template 模板信息
     * @return 结果
     */
	@Override
	public int insertTemplate(Template template)
	{
		String userId =SessionEntity.getCacheInfo("userId").getValue().toString();
		template.setUserId(userId);
		template.setCreateTime(new Date());
		String path =System.getProperty("user.dir");
		path=path+"\\src\\main\\resources\\templates\\vm";
		path =path +"\\"+userId+"\\"+template.getTemplateName();
		writeLocalStrTwo(template.getTemplateContent(),path);
	    return templateMapper.insertTemplate(template);
	}
	
	/**
     * 修改模板
     * 
     * @param template 模板信息
     * @return 结果
     */
	@Override
	public int updateTemplate(Template template)
	{
		String userId =SessionEntity.getCacheInfo("userId").getValue().toString();
		String path =System.getProperty("user.dir");
		path=path+"\\src\\main\\resources\\templates\\vm";
		path =path +"\\"+userId+"\\";
		delFile(path,template.getTemplateName());
		path =path +"\\"+template.getTemplateName();
		writeLocalStrTwo(template.getTemplateContent(),path);
	    return templateMapper.updateTemplate(template);
	}

	/**
     * 删除模板对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteTemplateByIds(String ids)
	{
		String [] idStr =Convert.toStrArray(ids);
		String userId =SessionEntity.getCacheInfo("userId").getValue().toString();
		String path =System.getProperty("user.dir");
		path=path+"\\src\\main\\resources\\templates\\vm";
		path =path +"\\"+userId+"\\";
		for (String str : idStr) {
			Template tem =templateMapper.selectTemplateById(Long.valueOf(str));
					 delFile(path,tem.getTemplateName());
		}
		
		return templateMapper.deleteTemplateByIds(Convert.toStrArray(ids));
	}
	
	
	/**
	* str:    要写入的文件内容   例如:{\"id\":1777944995971746430,\"frName\":\"会议纪要\",\"createDate\":\"2018-7-11\"}
	* path：      文件具体路径        例如:D:/111/2018/7/11/会议纪要.json
	*/
	public static void writeLocalStrTwo(String str,String path){
		try {
			System.out.println("path完毕!"+path);
 
			 File file = new File(path);
	            File fileParent = file.getParentFile();
	            if(!fileParent.exists()){
	                    fileParent.mkdirs();
	                }
	            file.createNewFile();
			
			
			if(str != null && !"".equals(str)){
				FileOutputStream fos = new FileOutputStream(file);
				OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
				osw.write(str);
				osw.flush();
				osw.close();
				fos.close();
				System.out.println("执行完毕!");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 创建新文件夹
	 * @param path
	 */
	
	 public void createDir(String path) {
         File dir=new File(path);
         if(!dir.exists()){
        	 dir.mkdir();
         }   
     }


	/**
	 * 删除文件(目录)
	 */
     public void delFile(String path,String filename){
         File file=new File(path+"/"+filename);
         if(file.exists()&&file.isFile())
             file.delete();
     }

	
	
}
